package article2.builder;

/**
 * 第二种实现方法：JavaBeans模式，在这种模式下，调用一个无参构造器来创建对象，
 * 然后调用setter方法来设置每个必要的参数，以及每个可选的相关参数
 * 遗憾的是，JavaBeans模式自身有着很严重的缺点。因为构造过程被分到了几个调用中，在构造过程中JavaBeans可能处于不一致的状态。
 * 类无法仅仅通过检验构造器参数的有效性来保证一致性。试图使用处于不一致状态的对象，将会导致失败，
 * 这种失败与包含错误的代码大相径庭，因此它调试起来十分困难。与此相关的另一点不足在于，
 * JavaBeans模式阻止了把类做成不可变的可能，这就需要程序员付出额外的努力来确保它的线程安全。
 *
 * @author cctv
 */
public class NutritionFactsByJavaBeans {

    private int servingSize = -1;
    private int servings = -1;
    private int calories = 0;
    private int fat = 0;
    private int sodium = 0;
    private int carbohydrate = 0;
    public NutritionFactsByJavaBeans() {}

    //Setters

    public void setServingSize(int servingSize) {
        this.servingSize = servingSize;
    }
    public void setServings(int servings) {
        this.servings = servings;
    }
    public void setCalories(int calories) {
        this.calories = calories;
    }
    public void setFat(int fat) {
        this.fat = fat;
    }
    public void setSodium(int sodium) {
        this.sodium = sodium;
    }
    public void setCarbohydrate(int carbohydrate) {
        this.carbohydrate = carbohydrate;
    };
}